// https: // iai.sh.cn/problem/433

#include <bits/stdc++.h>
using namespace std;

int n; // 声明一个全局变量 n，用于存储输入的整数
int k; // 声明一个全局变量 k，用于存储要打印的第 k 小的分数

vector<pair<int, int>> fractions; // 用于存储生成的分数

// 深度优先搜索函数，参数分别为当前深度 dep，分数的分子 a，分母 b，分子 c，分母d
void dfs(int dep, int a, int b, int c, int d) {
  // 如果分数 b + d 大于 n，表示已经超出范围
  if (b + d > n) {
    // 如果分数不是 1/1，则输出分数 c/d
    if (!(c == 1 && d == 1) && d != 0) {
      fractions.push_back({c, d}); // 存储分数 c/d
    }
    return; // 结束当前递归
  }

  // 递归调用，生成新的分数
  dfs(dep + 1, a, b, a + c, b + d); // 生成分数 (a+c)/(b+d)
  dfs(dep + 1, a + c, b + d, c, d);
}

// 主函数
int main() {
  cin >> n >> k;      // 从标准输入读取一个整数 n 和 k
  dfs(0, 0, 1, 1, 1); // 从分数 1/1 开始进行深度优先搜索

  // 对分数进行排序
  sort(fractions.begin(), fractions.end(),
       [](pair<int, int> f1, pair<int, int> f2) {
         return f1.first * f2.second < f2.first * f1.second; // 按照分数大小排序
       });

  for (auto f : fractions) {
    cout << f.first << "/" << f.second << endl;
  }

  cout << fractions[k - 1].first << "/" << fractions[k - 1].second << endl;
  return 0;  
}